@echo off
setlocal enabledelayedexpansion

REM GoX 项目构建脚本 (Windows 版本)

echo 🚀 开始构建 GoX 项目...

REM 1. 清理之前生成的文件
echo 🧹 清理旧的生成文件...
for %%f in (*.go) do (
    echo "%%f" | findstr /v ".gox.go" >nul
    if !errorlevel! equ 0 (
        if not "%%f"=="extension.js" (
            del "%%f" 2>nul
        )
    )
)

REM 2. 编译所有 .gox 文件
echo 🔨 编译 GoX 源文件...
for %%f in (*.gox) do (
    if exist "%%f" (
        set "output_file=%%~nf.go"
        echo   处理: %%f -^> !output_file!
        
        REM 检查 goxc 编译器是否存在
        where goxc >nul 2>&1
        if !errorlevel! equ 0 (
            goxc -i "%%f" -o "!output_file!"
        ) else if exist "..\gox-lsp.exe" (
            ..\gox-lsp.exe -compile -i "%%f" -o "!output_file!"
        ) else (
            echo ⚠️  GoX 编译器未找到，使用模拟编译...
            REM 模拟编译：移除构建标签，生成有效的Go文件
            findstr /v /c:"//go:build ignore" /c:"// +build ignore" /c:"//go:generate" "%%f" > "!output_file!"
        )
        
        echo   ✅ 生成: !output_file!
    )
)

REM 3. 运行 go generate（如果需要）
if "%1"=="--generate" (
    echo 🔄 运行 go generate...
    go generate ./...
)

REM 4. 构建 Go 项目
if "%1"=="--build" (
    echo 🔨 构建 Go 项目...
    go build -v ./...
    echo ✅ 构建完成！
) else if "%2"=="--build" (
    echo 🔨 构建 Go 项目...
    go build -v ./...
    echo ✅ 构建完成！
)

REM 5. 运行测试
if "%1"=="--test" (
    echo 🧪 运行测试...
    go test ./...
) else if "%2"=="--test" (
    echo 🧪 运行测试...
    go test ./...
)

echo 🎉 GoX 项目构建完成！
pause 